# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer:
pkgname=utop
pkgver=2.1.0
pkgrel=3
pkgdesc="Universal toplevel for OCaml"
url="https://github.com/diml/utop"
# x86, armhf, s390x, mips, mips64: limited by ocaml aport
arch="all !x86 !armhf !armv7 !s390x !mips !mips64"
license="BSD-3-Clause"
depends="
	ocaml-$pkgname=$pkgver-r$pkgrel
	$pkgname-common=$pkgver-r$pkgrel
	"
_depends_ocaml="
	ocaml-runtime
	ocaml-camomile
	ocaml-findlib>=1.7.2
	ocaml-lambda-term
	ocaml-lwt
	ocaml-lwt_react
	ocaml-react
	"
makedepends="
	dune
	ocaml
	ocaml-compiler-libs
	ocaml-camomile-dev
	ocaml-cppo
	ocaml-findlib-dev
	ocaml-lambda-term-dev
	ocaml-lwt-dev
	ocaml-react-dev
	opam
	"
subpackages="
	$pkgname-full:_full
	$pkgname-common:_common:noarch
	$pkgname-doc
	$pkgname-emacs::noarch
	ocaml-$pkgname-dev:_libdev
	ocaml-$pkgname:_lib
	"
source="$pkgname-$pkgver.tar.bz2::https://github.com/diml/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tbz"
builddir="$srcdir/$pkgname-$pkgver"

build() {
	cd "$builddir"
	jbuilder build @install
}

check() {
	cd "$builddir"
	jbuilder runtest
}

package() {
	cd "$builddir"

	opam-installer -i \
		--prefix="$pkgdir/usr" \
		--libdir="$pkgdir/usr/lib/ocaml" \
		--docdir="$pkgdir/doc" \
		--mandir="$pkgdir/usr/share/man" \
		$pkgname.install

	# There's just a readme and changelog.
	rm -Rf "$pkgdir"/doc

	# Remove annotation files and sources.
	cd "$pkgdir"/usr/lib/ocaml/$pkgname
	rm -f *.cmt* *.ml
}

_full() {
	pkgdesc="$pkgdesc (non-expunged)"

	_submv usr/bin/utop-full
}

_common() {
	pkgdesc="Common files for utop and utop-full"
	depends=""

	_submv usr/share/$pkgname
}

emacs() {
	pkgdesc="utop plugin for Emacs"
	depends="$pkgname=$pkgver-r$pkgrel"
	install_if="$pkgname=$pkgver-r$pkgrel emacs"

	_submv usr/share/emacs
}

_libdev() {
	pkgdesc="$pkgdesc (development files)"
	depends="ocaml-$pkgname=$pkgver-r$pkgrel"
	local sitelib="usr/lib/ocaml/$pkgname"

	_submv $sitelib/*.mli
}

_lib() {
	pkgdesc="$pkgdesc (library)"
	depends="$_depends_ocaml"

	_submv usr/lib/ocaml
}

_submv() {
	local path="$1"
	mkdir -p "$subpkgdir"/${path%/*}
	mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
	rmdir -p "$pkgdir"/${path%/*} 2>/dev/null || true
}

sha512sums="5c18daad46569fccbaadebd258be8afa5c0499853b026260f12f6dec3b05c77875d555fb538a7008a994d9e4b7731128927a6cc1fece455dfe227954ee12372c  utop-2.1.0.tar.bz2"
